home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Bank smakow / BankSmakow.air / BankSmakow.swf / scripts / mx / controls / Label.as < prev    next >
Text File  |  2009-12-16  |  15KB  |  503 lines

  1. package mx.controls
  2. {
  3.    import flash.display.DisplayObject;
  4.    import flash.events.Event;
  5.    import flash.geom.Rectangle;
  6.    import flash.text.StyleSheet;
  7.    import flash.text.TextLineMetrics;
  8.    import mx.controls.listClasses.BaseListData;
  9.    import mx.controls.listClasses.IDropInListItemRenderer;
  10.    import mx.controls.listClasses.IListItemRenderer;
  11.    import mx.core.FlexVersion;
  12.    import mx.core.IDataRenderer;
  13.    import mx.core.IFlexModuleFactory;
  14.    import mx.core.IFontContextComponent;
  15.    import mx.core.IUITextField;
  16.    import mx.core.UIComponent;
  17.    import mx.core.UITextField;
  18.    import mx.core.mx_internal;
  19.    import mx.events.FlexEvent;
  20.    
  21.    use namespace mx_internal;
  22.    
  23.    public class Label extends UIComponent implements IDataRenderer, IDropInListItemRenderer, IListItemRenderer, IFontContextComponent
  24.    {
  25.       
  26.       mx_internal static const VERSION:String = "3.5.0.12683";
  27.        
  28.       
  29.       private var _selectable:Boolean = false;
  30.       
  31.       private var _text:String = "";
  32.       
  33.       private var _data:Object;
  34.       
  35.       mx_internal var htmlTextChanged:Boolean = false;
  36.       
  37.       private var _tabIndex:int = -1;
  38.       
  39.       private var styleSheetChanged:Boolean = false;
  40.       
  41.       private var explicitHTMLText:String = null;
  42.       
  43.       private var _textWidth:Number;
  44.       
  45.       private var enabledChanged:Boolean = false;
  46.       
  47.       private var condenseWhiteChanged:Boolean = false;
  48.       
  49.       private var _listData:BaseListData;
  50.       
  51.       protected var textField:IUITextField;
  52.       
  53.       private var _htmlText:String = "";
  54.       
  55.       private var _condenseWhite:Boolean = false;
  56.       
  57.       private var _textHeight:Number;
  58.       
  59.       private var _styleSheet:StyleSheet;
  60.       
  61.       mx_internal var textChanged:Boolean = false;
  62.       
  63.       public var truncateToFit:Boolean = true;
  64.       
  65.       private var textSet:Boolean;
  66.       
  67.       private var selectableChanged:Boolean;
  68.       
  69.       private var toolTipSet:Boolean = false;
  70.       
  71.       public function Label()
  72.       {
  73.          super();
  74.          tabChildren = true;
  75.       }
  76.       
  77.       override public function set enabled(param1:Boolean) : void
  78.       {
  79.          if(param1 == enabled)
  80.          {
  81.             return;
  82.          }
  83.          super.enabled = param1;
  84.          enabledChanged = true;
  85.          invalidateProperties();
  86.       }
  87.       
  88.       private function textField_textFieldStyleChangeHandler(param1:Event) : void
  89.       {
  90.          textFieldChanged(true);
  91.       }
  92.       
  93.       override public function get baselinePosition() : Number
  94.       {
  95.          var _loc1_:String = null;
  96.          var _loc2_:TextLineMetrics = null;
  97.          if(FlexVersion.compatibilityVersion < FlexVersion.VERSION_3_0)
  98.          {
  99.             if(!textField)
  100.             {
  101.                return NaN;
  102.             }
  103.             validateNow();
  104.             _loc1_ = !!isHTML ? explicitHTMLText : text;
  105.             if(_loc1_ == "")
  106.             {
  107.                _loc1_ = " ";
  108.             }
  109.             _loc2_ = !!isHTML ? measureHTMLText(_loc1_) : measureText(_loc1_);
  110.             return textField.y + _loc2_.ascent;
  111.          }
  112.          if(!validateBaselinePosition())
  113.          {
  114.             return NaN;
  115.          }
  116.          return textField.y + textField.baselinePosition;
  117.       }
  118.       
  119.       private function textField_textModifiedHandler(param1:Event) : void
  120.       {
  121.          textFieldChanged(false);
  122.       }
  123.       
  124.       public function set condenseWhite(param1:Boolean) : void
  125.       {
  126.          if(param1 == _condenseWhite)
  127.          {
  128.             return;
  129.          }
  130.          _condenseWhite = param1;
  131.          condenseWhiteChanged = true;
  132.          if(isHTML)
  133.          {
  134.             htmlTextChanged = true;
  135.          }
  136.          invalidateProperties();
  137.          invalidateSize();
  138.          invalidateDisplayList();
  139.          dispatchEvent(new Event("condenseWhiteChanged"));
  140.       }
  141.       
  142.       public function get textWidth() : Number
  143.       {
  144.          return _textWidth;
  145.       }
  146.       
  147.       override protected function createChildren() : void
  148.       {
  149.          super.createChildren();
  150.          if(!textField)
  151.          {
  152.             createTextField(-1);
  153.          }
  154.       }
  155.       
  156.       mx_internal function getTextField() : IUITextField
  157.       {
  158.          return textField;
  159.       }
  160.       
  161.       private function measureTextFieldBounds(param1:String) : Rectangle
  162.       {
  163.          var _loc2_:TextLineMetrics = !!isHTML ? measureHTMLText(param1) : measureText(param1);
  164.          return new Rectangle(0,0,_loc2_.width + UITextField.TEXT_WIDTH_PADDING,_loc2_.height + UITextField.TEXT_HEIGHT_PADDING);
  165.       }
  166.       
  167.       mx_internal function getMinimumText(param1:String) : String
  168.       {
  169.          if(!param1 || param1.length < 2)
  170.          {
  171.             param1 = "Wj";
  172.          }
  173.          return param1;
  174.       }
  175.       
  176.       private function textFieldChanged(param1:Boolean) : void
  177.       {
  178.          var _loc2_:* = false;
  179.          var _loc3_:* = false;
  180.          if(!param1)
  181.          {
  182.             _loc2_ = _text != textField.text;
  183.             _text = textField.text;
  184.          }
  185.          _loc3_ = _htmlText != textField.htmlText;
  186.          _htmlText = textField.htmlText;
  187.          if(_loc2_)
  188.          {
  189.             dispatchEvent(new FlexEvent(FlexEvent.VALUE_COMMIT));
  190.          }
  191.          if(_loc3_)
  192.          {
  193.             dispatchEvent(new Event("htmlTextChanged"));
  194.          }
  195.          _textWidth = textField.textWidth;
  196.          _textHeight = textField.textHeight;
  197.       }
  198.       
  199.       [Bindable("dataChange")]
  200.       public function get data() : Object
  201.       {
  202.          return _data;
  203.       }
  204.       
  205.       [Bindable("valueCommit")]
  206.       public function get text() : String
  207.       {
  208.          return _text;
  209.       }
  210.       
  211.       public function get textHeight() : Number
  212.       {
  213.          return _textHeight;
  214.       }
  215.       
  216.       public function get styleSheet() : StyleSheet
  217.       {
  218.          return _styleSheet;
  219.       }
  220.       
  221.       public function set selectable(param1:Boolean) : void
  222.       {
  223.          if(param1 == selectable)
  224.          {
  225.             return;
  226.          }
  227.          _selectable = param1;
  228.          selectableChanged = true;
  229.          invalidateProperties();
  230.       }
  231.       
  232.       override public function get tabIndex() : int
  233.       {
  234.          return _tabIndex;
  235.       }
  236.       
  237.       public function set fontContext(param1:IFlexModuleFactory) : void
  238.       {
  239.          this.moduleFactory = param1;
  240.       }
  241.       
  242.       mx_internal function removeTextField() : void
  243.       {
  244.          if(textField)
  245.          {
  246.             textField.removeEventListener("textFieldStyleChange",textField_textFieldStyleChangeHandler);
  247.             textField.removeEventListener("textInsert",textField_textModifiedHandler);
  248.             textField.removeEventListener("textReplace",textField_textModifiedHandler);
  249.             removeChild(DisplayObject(textField));
  250.             textField = null;
  251.          }
  252.       }
  253.       
  254.       override public function set toolTip(param1:String) : void
  255.       {
  256.          super.toolTip = param1;
  257.          toolTipSet = param1 != null;
  258.       }
  259.       
  260.       mx_internal function createTextField(param1:int) : void
  261.       {
  262.          if(!textField)
  263.          {
  264.             textField = IUITextField(createInFontContext(UITextField));
  265.             textField.enabled = enabled;
  266.             textField.ignorePadding = true;
  267.             textField.selectable = selectable;
  268.             textField.styleName = this;
  269.             textField.addEventListener("textFieldStyleChange",textField_textFieldStyleChangeHandler);
  270.             textField.addEventListener("textInsert",textField_textModifiedHandler);
  271.             textField.addEventListener("textReplace",textField_textModifiedHandler);
  272.             if(param1 == -1)
  273.             {
  274.                addChild(DisplayObject(textField));
  275.             }
  276.             else
  277.             {
  278.                addChildAt(DisplayObject(textField),param1);
  279.             }
  280.          }
  281.       }
  282.       
  283.       override protected function commitProperties() : void
  284.       {
  285.          super.commitProperties();
  286.          if(hasFontContextChanged() && textField != null)
  287.          {
  288.             removeTextField();
  289.             condenseWhiteChanged = true;
  290.             enabledChanged = true;
  291.             selectableChanged = true;
  292.             textChanged = true;
  293.          }
  294.          if(!textField)
  295.          {
  296.             createTextField(-1);
  297.          }
  298.          if(condenseWhiteChanged)
  299.          {
  300.             textField.condenseWhite = _condenseWhite;
  301.             condenseWhiteChanged = false;
  302.          }
  303.          textField.tabIndex = tabIndex;
  304.          if(enabledChanged)
  305.          {
  306.             textField.enabled = enabled;
  307.             enabledChanged = false;
  308.          }
  309.          if(selectableChanged)
  310.          {
  311.             textField.selectable = _selectable;
  312.             selectableChanged = false;
  313.          }
  314.          if(styleSheetChanged)
  315.          {
  316.             textField.styleSheet = _styleSheet;
  317.             styleSheetChanged = false;
  318.          }
  319.          if(mx_internal::textChanged || mx_internal::htmlTextChanged)
  320.          {
  321.             if(isHTML)
  322.             {
  323.                textField.htmlText = explicitHTMLText;
  324.             }
  325.             else
  326.             {
  327.                textField.text = _text;
  328.             }
  329.             textFieldChanged(false);
  330.             textChanged = false;
  331.             htmlTextChanged = false;
  332.          }
  333.       }
  334.       
  335.       [Bindable("condenseWhiteChanged")]
  336.       public function get condenseWhite() : Boolean
  337.       {
  338.          return _condenseWhite;
  339.       }
  340.       
  341.       public function set listData(param1:BaseListData) : void
  342.       {
  343.          _listData = param1;
  344.       }
  345.       
  346.       private function get isHTML() : Boolean
  347.       {
  348.          return explicitHTMLText != null;
  349.       }
  350.       
  351.       public function get selectable() : Boolean
  352.       {
  353.          return _selectable;
  354.       }
  355.       
  356.       public function set text(param1:String) : void
  357.       {
  358.          textSet = true;
  359.          if(!param1)
  360.          {
  361.             param1 = "";
  362.          }
  363.          if(!isHTML && param1 == _text)
  364.          {
  365.             return;
  366.          }
  367.          _text = param1;
  368.          textChanged = true;
  369.          _htmlText = null;
  370.          explicitHTMLText = null;
  371.          invalidateProperties();
  372.          invalidateSize();
  373.          invalidateDisplayList();
  374.          dispatchEvent(new FlexEvent(FlexEvent.VALUE_COMMIT));
  375.       }
  376.       
  377.       public function set data(param1:Object) : void
  378.       {
  379.          var _loc2_:* = undefined;
  380.          _data = param1;
  381.          if(_listData)
  382.          {
  383.             _loc2_ = _listData.label;
  384.          }
  385.          else if(_data != null)
  386.          {
  387.             if(_data is String)
  388.             {
  389.                _loc2_ = String(_data);
  390.             }
  391.             else
  392.             {
  393.                _loc2_ = _data.toString();
  394.             }
  395.          }
  396.          if(_loc2_ !== undefined && !textSet)
  397.          {
  398.             text = _loc2_;
  399.             textSet = false;
  400.          }
  401.          dispatchEvent(new FlexEvent(FlexEvent.DATA_CHANGE));
  402.       }
  403.       
  404.       override protected function measure() : void
  405.       {
  406.          super.measure();
  407.          var _loc1_:String = !!isHTML ? explicitHTMLText : text;
  408.          _loc1_ = getMinimumText(_loc1_);
  409.          var _loc2_:Rectangle = measureTextFieldBounds(_loc1_);
  410.          measuredMinWidth = measuredWidth = _loc2_.width + getStyle("paddingLeft") + getStyle("paddingRight");
  411.          measuredMinHeight = measuredHeight = _loc2_.height + getStyle("paddingTop") + getStyle("paddingBottom");
  412.       }
  413.       
  414.       public function get fontContext() : IFlexModuleFactory
  415.       {
  416.          return moduleFactory;
  417.       }
  418.       
  419.       [Bindable("dataChange")]
  420.       public function get listData() : BaseListData
  421.       {
  422.          return _listData;
  423.       }
  424.       
  425.       public function set styleSheet(param1:StyleSheet) : void
  426.       {
  427.          _styleSheet = param1;
  428.          styleSheetChanged = true;
  429.          htmlTextChanged = true;
  430.          invalidateProperties();
  431.       }
  432.       
  433.       public function set htmlText(param1:String) : void
  434.       {
  435.          textSet = true;
  436.          if(!param1)
  437.          {
  438.             param1 = "";
  439.          }
  440.          if(isHTML && param1 == explicitHTMLText)
  441.          {
  442.             return;
  443.          }
  444.          _htmlText = param1;
  445.          htmlTextChanged = true;
  446.          _text = null;
  447.          explicitHTMLText = param1;
  448.          invalidateProperties();
  449.          invalidateSize();
  450.          invalidateDisplayList();
  451.          dispatchEvent(new Event("htmlTextChanged"));
  452.       }
  453.       
  454.       override protected function updateDisplayList(param1:Number, param2:Number) : void
  455.       {
  456.          var _loc9_:* = false;
  457.          super.updateDisplayList(param1,param2);
  458.          var _loc3_:Number = getStyle("paddingLeft");
  459.          var _loc4_:Number = getStyle("paddingTop");
  460.          var _loc5_:Number = getStyle("paddingRight");
  461.          var _loc6_:Number = getStyle("paddingBottom");
  462.          textField.setActualSize(param1 - _loc3_ - _loc5_,param2 - _loc4_ - _loc6_);
  463.          textField.x = _loc3_;
  464.          textField.y = _loc4_;
  465.          var _loc7_:String = !!isHTML ? explicitHTMLText : text;
  466.          var _loc8_:Rectangle = measureTextFieldBounds(_loc7_);
  467.          if(truncateToFit)
  468.          {
  469.             if(isHTML)
  470.             {
  471.                _loc9_ = _loc8_.width > textField.width;
  472.             }
  473.             else
  474.             {
  475.                textField.text = _text;
  476.                _loc9_ = Boolean(textField.truncateToFit());
  477.             }
  478.             if(!toolTipSet)
  479.             {
  480.                super.toolTip = !!_loc9_ ? text : null;
  481.             }
  482.          }
  483.       }
  484.       
  485.       [Bindable("htmlTextChanged")]
  486.       public function get htmlText() : String
  487.       {
  488.          return _htmlText;
  489.       }
  490.       
  491.       public function getLineMetrics(param1:int) : TextLineMetrics
  492.       {
  493.          return !!textField ? textField.getLineMetrics(param1) : null;
  494.       }
  495.       
  496.       override public function set tabIndex(param1:int) : void
  497.       {
  498.          _tabIndex = param1;
  499.          invalidateProperties();
  500.       }
  501.    }
  502. }
  503.